package com.itheima.stream;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/*
Stream流的收集方法 toMap方法演示
创建一个ArrayList集合，并添加以下字符串。字符串中前面是姓名，后面是年龄
"zhangsan,23"
"lisi,24"
"wangwu,25"
保留年龄大于等于24岁的人，并将结果收集到Map集合中，姓名为键，年龄为值

1.创建集合  插入数据
2.获取流
3.过滤流
    获取到流中的每一个元素  这个是一个字符串
    获取字符串中的 一部分  以逗号进行切割  数组名[0] 姓名   数组名[1] 年龄
    把年龄转换成int    根据int 年龄去筛选
4.收集到Map中  把名字作为键   把年龄作为值



 */
public class Demo08 {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>(List.of("张三,23", "李四,24", "王五,25"));
        //2.获取流
        Stream<String> stream = list.stream();
        //3.过滤流
       Stream<String> stream1 = stream.filter(s -> {
            //    获取到流中的每一个元素  这个是一个字符串
            //    获取字符串中的 一部分  以逗号进行切割  数组名[0] 姓名   数组名[1] 年龄
            String[] studentinfo = s.split(",");
            String name = studentinfo[0];
            String ageStr = studentinfo[1];
            //    把年龄转换成int    根据int 年龄去筛选
            int age = Integer.parseInt(ageStr);
            return age >= 24;

        });

        //4.收集到Map中  把名字作为键   把年龄作为值
        /*Map<String, Integer> map = stream1.collect(Collectors.toMap(new Function<String, String>() {
            @Override
            public String apply(String s) {
                //只想要姓名
                return s.split(",")[0];
            }
        }, new Function<String, Integer>() {
            @Override
            public Integer apply(String s) {
                //只想要年龄
                return Integer.parseInt(s.split(",")[1]);

            }
        }));*/

        Map<String, Integer> map = stream1.collect(Collectors.toMap(s -> s.split(",")[0], s -> Integer.parseInt(s.split(",")[1])));
        System.out.println(map);
    }
}
